package singleton.normal;

/**
 * Title: SingletonSynchronized <br>
 * Description: <br>
 * Copyright (c) 传化物流版权所有 2017 <br>
 * Created DateTime: 2017-3-7 12:16
 * Created by Wentao.Shi.
 */
public class SingletonSynchronized {
    /* 持有私有静态实例，防止被引用，此处赋值为null，目的是实现延迟加载 */
    private static SingletonSynchronized instance = null;
    /* 私有构造方法，防止被实例化 */
    private SingletonSynchronized() {
    }
    /* 静态工程方法，创建实例 */
    public static synchronized SingletonSynchronized getInstance() {
        if (instance == null) {
            instance = new SingletonSynchronized();
        }
        return instance;
    }
}
/**
 * 但是，synchronized关键字锁住的是这个对象，这样的用法，在性能上会有所下降，因为每次调用getInstance()，都要对对象上锁，
 * 事实上，只有在第一次创建对象的时候需要加锁，之后就不需要了，所以，这个地方需要改进。
 */